String.prototype.startWith = function (str) {
    if (str == null || str == "" || this.length == 0 || str.length > this.length)
        return false;
    if (this.substr(0, str.length) == str)
        return true;
    else
        return false;
    return true;
}
String.prototype.endWith = function (str) {
    if (str == null || str == "" || this.length == 0 || str.length > this.length)
        return false;
    if (this.substring(this.length - str.length) == str)
        return true;
    else
        return false;
    return true;
}

//日期格式化
Date.prototype.format = function (format) {
    if (!format) {
        format = 'yyyy-MM-dd';// 默认1997-01-01这样的格式
    }
    var o = {
        "M+": this.getMonth() + 1, // month
        "d+": this.getDate(), // day
        "h+": this.getHours(), // hour
        "m+": this.getMinutes(), // minute
        "s+": this.getSeconds(), // second
        "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
        "S": this.getMilliseconds() // millisecond
    }

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}


var config = {
    serverUrl: "//" + location.host
}

function Core() {

}

Core.prototype.numformat = function () {
    var num = (num || 0).toString(), result = '';
    var suffix = "";
    if (num.indexOf(".") > -1) {
        var t = num.split(".");
        num = t[0];
        suffix = "." + t[1];

    }

    while (num.length > 3) {
        result = ',' + num.slice(-3) + result;
        num = num.slice(0, num.length - 3);
    }
    if (num) {
        result = num + "" + result;
    }

    return result + suffix;
}
Core.prototype.token = function (d) {
    d.createAt = new Date();
    return this.data("token", d);
}

Core.prototype.error = function (d) {
    alert(d)
}
Core.prototype.alert = function (d) {
    alert(d)
}
//用于存储信息
Core.prototype.data = function (k, d) {
    //console.log("data",k,d)
    if (typeof d == "undefined") {
        var o = localStorage.getItem(k);
        if (o == null) {
            return null;
        } else {
            o = JSON.parse(o)
            return o[k]
        }


    } else if (null == d) {
        return localStorage.removeItem(k)
    } else {
        var o = {}
        o[k] = d;
        return localStorage.setItem(k, JSON.stringify(o))
    }
}
//用于存储信息
Core.prototype.api = function (uri) {
    if (uri.startWith("/")) {
        return config.serverUrl + uri
    } else {
        return config.serverUrl + "/" + uri
    }
}
Core.prototype.post = function (uri, data, fn) {
    var url = this.api(uri)
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, true);
        // 添加http头，发送信息至服务器时内容编码类型
        xhr.setRequestHeader(
            "Content-Type",
            "application/x-www-form-urlencoded"
        );
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
                resolve(JSON.parse(xhr.responseText));
            }
        };
        xhr.onerror = function () {
            reject({"code": -1, "msg": "服务器繁忙"})
        }
        var _data = [];
        for (var i in data) {
            _data.push(i + "=" + encodeURI(data[i]));
        }
        xhr.send(_data.join("&"));

    })
}
Core.prototype.uploadfile = function (uri, dom) {
    var url = this.api(uri)
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {
                resolve(JSON.parse(xhr.responseText));
            }
        };
        xhr.onerror = function () {
            reject({"code": -1, "msg": "服务器繁忙"})
        }

        var formdata = new FormData();
        formdata.append("file", dom.files[0])
        xhr.send(formdata);
    })


}

Core.prototype.uploadmp3 = function (uri, blob) {

    var url = this.api(uri)
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
                resolve(JSON.parse(xhr.responseText));
            }
        };
        xhr.onerror = function () {
            reject({"code": -1, "msg": "服务器繁忙"})
        }

        var formdata = new FormData();
        formdata.append("filetype", ".mp3");
        formdata.append("file", blob)
        xhr.send(formdata);
    })

}

Core.prototype.parseUri = function (url) {
    if (typeof url == "undefined") {
        url = location.href;
    }
    var query = url.substr(url.indexOf("?"));
    query = query.substr(1);
    var reg = /([^=&\s]+)[=\s]*([^=&\s]*)/g;
    var obj = {};
    while (reg.exec(query)) {
        obj[RegExp.$1] = decodeURI(RegExp.$2);
    }
    return obj;
}
Core.prototype.parseQuery = function (name) {

    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
    if (r != null) return decodeURI(unescape(r[2]));
    return null; //返回参数值
}

Core.prototype.isemail = function (email) {
    return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+[\.][a-zA-Z0-9_-]+$/.test(email)
}
Core.prototype.ismobile = function (mobile) {
    return /^[1][34578][0-9]{9}$/.test(mobile)
}

Core.prototype.test = function (reg, data) {
    var reg = new RegExp(reg); //构造一个含有目标参数的正则表达式对象
    return reg.test(data)
}
window.util = new Core();


	
